package com.tgy.myswagger.config;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.util.ObjectUtils;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.Objects;

/***
 * @ClassName: SwaggerConfig
 * @Description:
 * @Auther: 送一一块二向箔
 * @Date: 21:04 2022/1/6
 * @version : V1.0
 */
@Configuration //配置类
@EnableSwagger2// 开启Swagger2的自动配置
@PropertySource(value = "classpath:application.yml")
public class SwaggerConfig {


    @Value("${isTurnOn}")
    private String flag ;

    @Bean //配置docket以配置Swagger具体参数
    public Docket docket1() {
        return new Docket(DocumentationType.SWAGGER_2).groupName("AAA");
    }
    @Bean //配置docket以配置Swagger具体参数
    public Docket docket2() {
        return new Docket(DocumentationType.SWAGGER_2).groupName("bbb");
    }

    @Bean //配置docket以配置Swagger具体参数
    public Docket docket() {
        boolean isTurnOn = true;
        if (Objects.equals(flag,"false")) {
            isTurnOn = false;
        }

        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())

                .enable(isTurnOn) //配置是否启用Swagger，如果是false，在浏览器将无法访问
                .select()
                //扫描指定包下的接口
                .apis(RequestHandlerSelectors.basePackage("com.tgy.myswagger.controller"))

                // 配置如何通过path过滤,即这里只扫描请求以/tgy开头的接口
                //.paths(PathSelectors.ant("/tgy/**"))
                .build();
    }

    //配置文档信息
    private ApiInfo apiInfo() {
        Contact contact = new Contact("啊啊啊", "http://47.101.193.71:443/", "tanggy666@163.com");
        return new ApiInfoBuilder()
                .title("Swagger学习")
                .contact(contact)
                .version("1.0")
                .termsOfServiceUrl("http://47.101.193.71:443/")
                .description("学习演示如何配置Swagger")
                .extensions(new ArrayList<>())
                .build();

/*        new ApiInfo(
                "Swagger学习", // 标题
                "学习演示如何配置Swagger", // 描述
                "v1.0", // 版本
                "http://terms.service.url/组织链接", // 组织链接
                contact, // 联系人信息
                "Apach 2.0 许可", // 许可
                "许可链接", // 许可连接
                new ArrayList<>()// 扩展
        );*/
    }
}
